﻿

using Furion.DynamicApiController;
using Furion.FriendlyException;
using Furion.TaskQueue;
using IotClientService.Models.RealData;
using IotContract.Interfaces.Db;
using IotContract.Models.InfluxDb;
using Mapster;
using Microsoft.AspNetCore.Mvc;
using XT.Common.Extensions;
using XT.Common.Services;

namespace IotClientWeb.Controllers;

//public class FluxController
//{
//    private readonly ILogService _logService;
//    private readonly IRealDbService _realDbService;
//    public FluxController(ILogService logService, IRealDbService realDbService)
//    {
//        _logService = logService;
//        _realDbService = realDbService;
//    }
//    /// <summary>
//    /// 获取杭可数据
//    /// </summary>
//    /// <returns></returns>
//    //[ApiDescriptionSettings(Name = "WriteOcv")]
//    [Route("WriteOcv")]
//    [QueryParameters]
//    public async Task WriteOcvDatas(int totalSecond)
//    {
//        var result = await _realDbService.InitDb();

//        if (result.IsNotNullOrEmpty())
//        {
//            throw Oops.Oh(result);
//        }
//        // 后台任务
//        await TaskQueued.EnqueueAsync(async (provider, token) =>
//        {
//            List<HkOcvElec> alls = new List<HkOcvElec>();
//            List<HkOcvElec> ocvs = new List<HkOcvElec>();
//            // 电芯
//            for (int i = 1; i < 401; i++)
//            {
//                ocvs.Add(new HkOcvElec
//                {
//                    Cell = "hbc_abcdefg_" + i,
//                    Step = "OCV1"

//                });
//            }
//            int second = 1;
//            // 直接插入1分钟的数据
//            while (second <= totalSecond)
//            {
//                for (int i = 0; i < ocvs.Count; i++)
//                {
//                    ocvs[i].Step = "OCV" + second;
//                    ocvs[i].Value = i + second;
//                    ocvs[i].Time = DateTime.Now;
//                }
//                alls.AddRange(ocvs.Adapt<List<HkOcvElec>>());
//                await _logService.LogRemote(new XT.Common.Models.SignalR.RemoteLog
//                {
//                    IsToRemote = true,
//                    Title = "IotClientWeb",
//                    Content = $"正在准备数据，次数 {second}",
//                    Flag = "",
//                });
//                second++;
//                await Task.Delay(1000);
//            }
//            await _logService.LogRemote(new XT.Common.Models.SignalR.RemoteLog
//            {
//                IsToRemote = true,
//                Title = "IotClientWeb",
//                Content = $"开始入库，总数据 {alls.Count}",
//                Flag = "",
//            });
//            var result = await _realDbService.WriteDbs(alls, "test", "eve");

//            if (result.IsNotNullOrEmpty())
//            {
//                await _logService.LogRemote(new XT.Common.Models.SignalR.RemoteLog
//                {
//                    IsToRemote = true,
//                    Title = "IotClientWeb",
//                    Content = $"添加失败，总数据 {alls.Count}, 错误 {result}",
//                    Flag = "",
//                });
//            }
//            else
//            {
//                await _logService.LogRemote(new XT.Common.Models.SignalR.RemoteLog
//                {
//                    IsToRemote = true,
//                    Title = "IotClientWeb",
//                    Content = $"添加成功，总数据 {alls.Count}",
//                    Flag = "",
//                });
//            }









//        });
//    }
//    [HttpPost]
//    [ApiDescriptionSettings(Name = "QueryOcv")]
//    public async Task<List<HkOcvElec>> QueryOcvs(DbQuery query)
//    {
//        return await _realDbService.QueryDatas<HkOcvElec>(query);
//    }
//    /// <summary>
//    /// 查询数据
//    /// </summary>
//    /// <param name="query"></param>
//    /// <returns></returns>
//    [HttpPost]
//    [ApiDescriptionSettings(Name = "QueryData")]
//    public async Task<List<object>> QueryDatas(DbQuery query)
//    {
//        return await _realDbService.QueryDatas(query);
//    }


//    /// <summary>
//    /// 删除db数据
//    /// </summary>
//    /// <param name="dbDelete"></param>
//    /// <returns></returns>
//    [HttpPost]
//    [ApiDescriptionSettings(Name = "DeleteDb")]
//    public async Task DeleteDb(DbDelete dbDelete)
//    {
//        var result = await _realDbService.DeleteDbs(dbDelete);
//        if (result.IsNotNullOrEmpty())
//        {
//            throw Oops.Oh(result);
//        }
//    }

//    /// <summary>
//    /// 获取db数据
//    /// </summary>
//    /// <returns></returns>
//    public async Task<string> GetInfluxDb()
//    {
//        return await _realDbService.InitDb();
//    }
//}
